<?php
//------------------------------------------------------------ Contraintes d'accès de la page

	// on vérifie que cette page est appelée à partir de l'index et que l'utilisateur a le droit d'ajout
	if(isset($_SESSION) && ($GLOBALS['USER']['level'] >= 3 || $GLOBALS['USER']['admin'])){
	
?>
<?php
//------------------------------------------------------------ Valeur des champs avant saisie

	$dv_nom = ""; // valeur du champ nom (ajt_nom)
	$dv_prenom = ""; // valeur du champ prenom (ajt_prenom)
	$dv_email = ""; // valeur du champ e-mail (ajt_email)
	$dv_adresse = "N°, Voie"; // valeur du champ adesse (ajt_adresse)
	$dv_cp = "CP"; // valeur du champ code postal (ajt_cp)
	$dv_ville = "Ville"; // valeur du champ ville (ajt_ville)
	$dv_pays = "Pays"; // valeur du champ pays (ajt_pays)
	$dv_telperso = ""; // valeur du champ teléphone personnel (ajt_telperso)
	$dv_telbureau = ""; // valeur du champ téléphone bureau (ajt_telbureau)
	$dv_commentaire = ""; // valeur du champ commentaire (ajt_commentaire)
	$dv_structure = ""; // valeur du champ travail pour (ajt_structure)
	
	// valeurs possibles du champ ajt_structure
	$query_recuperation_structures = "SELECT CODESTRUCTURE AS id, NOMSTRUCTURE AS nom FROM structure ORDER BY nom";
	
	$result_recuperation_structures =  mysql_query($query_recuperation_structures, $connexion) or logError("RECUPERATION STRUCTURES-".$query_recuperation_structures."-".mysql_error());

	$selectStructures = array(); // on créé un tableau qui contient la liste des structures ainsi que les informations de chacune
	$nb_structures = 0;
	while($tab_recuperation_structures = mysql_fetch_assoc($result_recuperation_structures)){
		$selectStructures[$nb_structures] = $tab_recuperation_structures;
		$nb_structures++;
	}
	
	mysql_free_result($result_recuperation_structures);
	
?>
<?php
//------------------------------------------------------------ Traitements si le formulaire a été envoyé

/********************************* Règles :

	- nom, prénom, email ne peuvent pas être vide
	- email et téléphones doivent avoir un format valide
	- si elle est indiquée, la structure de travail doit désigner une structure de la base de donnée

*****************************************/

	$statut = array(); // indique le statut du traitement du formulaire (echec ou succes) - tableau contenant les messages à afficher
	$erreur = false; // indique si une erreur a été rencontrée lors du traitement

	trimTabByKey($_POST, "ajt_"); // appel à la fonction trimTabByKey() définie dans fonctions.php
	
	//---------------------------------- Contrôle des données ----------------------------------
	
	if(isset($_POST['form_sent'])){ // si le formulaire est envoyé
			
		// Contrôle des données du nom
		if(isset($_POST['ajt_nom']) && is_string($_POST['ajt_nom'])){
			if(emptyString($_POST['ajt_nom'])){
				$statut[] = "Nom vide";
				$erreur = true;
			}else{
				if(isNameFormat($_POST['ajt_nom'])){
					$dv_nom = $_POST['ajt_nom'];
				}else{
					$statut[] = "Format du nom incorrect";
					$erreur = true;
				}
			}
		}else{
			$statut[] = "Aucun nom indiqué";
			$erreur = true;
		}
		
		// Contrôle des données du prénom
		if(isset($_POST['ajt_prenom']) && is_string($_POST['ajt_prenom'])){
			if(emptyString($_POST['ajt_prenom'])){
				$statut[] = "Prénom vide";
				$erreur = true;
			}else{
				if(isNameFormat($_POST['ajt_prenom'])){
					$dv_prenom = $_POST['ajt_prenom'];
				}else{
					$statut[] = "Format du prénom incorrect";
					$erreur = true;
				}
			}
		}else{
			$statut[] = "Aucun prénom indiqué";
			$erreur = true;
		}
		
		// Contrôle des données de l'adresse e-mail
		if(isset($_POST['ajt_email']) && is_string($_POST['ajt_email'])){
			if(!emptyString($_POST['ajt_email'])){
				if(!isEmailFormat($_POST['ajt_email'])){
					$statut[] = "Format de l'adresse e-mail incorrect";
					$erreur = true;
				}else{
					$dv_email = $_POST['ajt_email'];
				}
			}
		}else{
			$statut[] = "Aucune adresse e-mail indiquée";
			$erreur = true;
		}
		
		// Contrôle des données de l'adresse de résidence
		if(isset($_POST['ajt_adresse']) && is_string($_POST['ajt_adresse'])){
			if($_POST['ajt_adresse'] == "N°, Voie" || emptyString($_POST['ajt_adresse'])){ // Si le champs à la valeur par défaut, on le traite comme si il était vide
				$_POST['ajt_adresse'] = "";
				$dv_adresse = "N°, Voie";
			}else{
				$dv_adresse = $_POST['ajt_adresse'];
			}
		}else{
			$statut[] = "Aucune adresse de domicile indiquée";
			$erreur = true;
		}
		
		// Contrôle des données du pays, du code postal  et de la ville de résidence
		$communeIndiquee = false; // variable indiquant si l'utilisateur a saisi la commune de résidence
		if(isset($_POST['ajt_cp']) && is_string($_POST['ajt_cp']) && isset($_POST['ajt_ville']) && is_string($_POST['ajt_ville']) && isset($_POST['ajt_pays']) && is_string($_POST['ajt_pays'])){
			if($_POST['ajt_cp'] == "CP" || emptyString($_POST['ajt_cp'])){ // Si le champs à la valeur par défaut, on le traite comme si il était vide
				$_POST['ajt_cp'] = "";
				$dv_cp = "CP";
			}
			if($_POST['ajt_ville'] == "Ville" || emptyString($_POST['ajt_ville'])){ // Si le champs à la valeur par défaut, on le traite comme si il était vide
				$_POST['ajt_ville'] = "";
				$dv_ville = "Ville";
			}
			if($_POST['ajt_pays'] == "Pays" || emptyString($_POST['ajt_pays'])){ // Si le champs à la valeur par défaut, on le traite comme si il était vide
				$_POST['ajt_pays'] = "";
				$dv_pays = "Pays";
			}
			if(!emptyString($_POST['ajt_ville']) && !emptyString($_POST['ajt_cp']) && !emptyString($_POST['ajt_pays'])){ // Code postal, Ville et Pays sont indiqués
				$communeIndiquee = true;
				if(!isPostalFormat($_POST['ajt_cp'])){
					$statut[] = "Format du code postal incorrect";
					$erreur = true;
				}else{
					$dv_cp = $_POST['ajt_cp'];
				}
				if(!isNameFormat($_POST['ajt_ville'])){
					$statut[] = "Format de la ville incorrect";
					$erreur = true;
				}else{
					$dv_ville = $_POST['ajt_ville'];
				}
				if(!isNameFormat($_POST['ajt_pays'])){
					$statut[] = "Format du pays de résidence incorrect";
					$erreur = true;
				}else{
					$dv_pays = $_POST['ajt_pays'];
				}
			}else if(!emptyString($_POST['ajt_ville']) || !emptyString($_POST['ajt_cp']) || !emptyString($_POST['ajt_pays'])){ // Parmus Code postal, Ville et Pays, au moins un n'est pas vide
				$statut[] = "La ville, son code postal et le pays doivent être indiqués";
				$erreur = true;
			}
		}else{
			$statut[] = "Aucune ville et pays de résidence indiqués";
			$erreur = true;
		}
		
		// Contrôle des données du numéro de téléphone personnel
		if(isset($_POST['ajt_telperso']) && is_string($_POST['ajt_telperso'])){
			if(!emptyString($_POST['ajt_telperso'])){
				if(!isPhoneFormat($_POST['ajt_telperso'])){
					$statut[] = "Format du numéro de téléphone personnel incorrect";
					$erreur = true;
				}else{
					$dv_telperso = $_POST['ajt_telperso'];
				}
			}else{
				$dv_telperso = $_POST['ajt_telperso'];
			}
		}else{
			$statut[] = "Aucun numéro de téléphone personnel indiqué";
			$erreur = true;
		}
		
		// Contrôle des données du numéro de téléphone du bureau
		if(isset($_POST['ajt_telbureau']) && is_string($_POST['ajt_telbureau'])){
			if(!emptyString($_POST['ajt_telbureau'])){
				if(!isPhoneFormat($_POST['ajt_telbureau'])){
					$statut[] = "Format du numéro de téléphone de bureau incorrect";
					$erreur = true;
				}else{
					$dv_telbureau = $_POST['ajt_telbureau'];
				}
			}else{
				$dv_telbureau = $_POST['ajt_telbureau'];
			}
		}else{
			$statut[] = "Aucun numéro de téléphone de bureau indiqué";
			$erreur = true;
		}
		
		// Contrôle des données de la structure où travaille la personne
		if(isset($_POST['ajt_structure']) && is_string($_POST['ajt_structure'])){
			if(!numericInt($_POST['ajt_structure']) && $_POST['ajt_structure'] != "none"){
				$statut[] = "Format du type de structure incorrect";
				$erreur = true;
			}else{
				if($_POST['ajt_structure'] != "none"){
					if(valueExists((int)$_POST['ajt_structure'], "CODESTRUCTURE", "structure", $connexion) == 1){
						$dv_structure = $_POST['ajt_structure'];
					}else{
						$statut[] = "La structure indiquée n'existe pas";
						$erreur = true;
					}
				}else{
					$dv_structure = null;
				}
			}
		}else{
			$statut[] = "Aucune structure de travail indiquée";
			$erreur = true;
		}
		
		// Contrôle des données du commentaire
		if(isset($_POST['ajt_commentaire']) && is_string($_POST['ajt_commentaire'])){ 
			$dv_commentaire = $_POST['ajt_commentaire'];
		}else{
			$statut[] = "Aucun commentaire indiqué";
			$erreur = true;
		}
		
		//---------------------------------- Création de la personne ----------------------------------
	
		if(!$erreur){ // aucune erreur n'a été rencontrée jusqu'ici
		
			if($communeIndiquee){ // Si le pays , la ville et son code postal sont indiqués

				// on vérifie si le pays existe déjà
				$query_recuperation_pays_existe = "SELECT CODEPAYS FROM pays WHERE NOMPAYS = ".mysqlString($_POST['ajt_pays']);
				$result_recuperation_pays_existe = mysql_query($query_recuperation_pays_existe, $connexion) or logError("RECUPERATION PAYS EXISTE-".$query_recuperation_pays_existe."-".mysql_error());
				if(mysql_num_rows($result_recuperation_pays_existe) > 0){ // le pays existe
					$tab_recuperation_pays_existe = mysql_fetch_row($result_recuperation_pays_existe);
					$idPays = $tab_recuperation_pays_existe[0];
				}else{ // le pays n'existe pas
					// On créé le nouveau pays
					$query_creation_pays = "INSERT INTO pays(NOMPAYS) VALUES(".mysqlString($_POST['ajt_pays']).")";
					$result_creation_pays = mysql_query($query_creation_pays, $connexion) or logError("CREATION PAYS-".$query_creation_pays."-".mysql_error());
					
					if($result_creation_pays === true){
						$idPays = valueMax("CODEPAYS", "pays", $connexion);
					}else{
						$statut[] = "Erreur critique lors de la création de la personne";
						$erreur = true;
					}
				}
				mysql_free_result($result_recuperation_pays_existe);
				
				if(!$erreur){ // aucune erreur n'a été rencontrée jusqu'ici
				
					// on vérifie si la commune existe déjà
					$query_recuperation_commune_existe = "SELECT CODECOMMUNE FROM commune WHERE NOMCOMMUNE = ".mysqlString($_POST['ajt_ville'])." AND CODEPOSTAL = ".mysqlString($_POST['ajt_cp']);
					$result_recuperation_commune_existe = mysql_query($query_recuperation_commune_existe, $connexion) or logError("RECUPERATION COMMUNE EXISTE-".$query_recuperation_commune_existe."-".mysql_error());
					if(mysql_num_rows($result_recuperation_commune_existe) > 0){ // la commune existe
						$tab_recuperation_commune_existe = mysql_fetch_row($result_recuperation_commune_existe);
						$idCommune = $tab_recuperation_commune_existe[0];
					}else{ // la commune n'existe pas
						// On créé la nouvelle commune
						$query_creation_commune = "INSERT INTO commune(NOMCOMMUNE, CODEPOSTAL, CODEPAYS) VALUES(".mysqlString($_POST['ajt_ville']).", ".mysqlString($_POST['ajt_cp']).", ".$idPays.")";
						$result_creation_commune = mysql_query($query_creation_commune, $connexion) or logError("CREATION COMMUNE-".$query_creation_commune."-".mysql_error());
						
						if($result_creation_commune === true){
							$idCommune = valueMax("CODECOMMUNE", "commune", $connexion);
						}else{
							$statut[] = "Erreur critique lors de la création de la personne";
							$erreur = true;
						}
					}
					mysql_free_result($result_recuperation_commune_existe);
				
				}
				
			}
		
			if(!$erreur){ // aucune erreur n'a été rencontrée jusqu'ici

				// Ajout des informations dans la table PERSONNE
				$query_creation_personne = "INSERT INTO personne(NOMPERSONNE, PRENOMPERSONNE, EMAILPERSONNE, ADRESSEPERSONNE, TELBUREAU, TELPORTABLE, COMMENTAIRE, CODECOMMUNE, CODESTRUCTURE) ";
				$query_creation_personne .= "VALUES(".mysqlString($_POST['ajt_nom'])." , ".mysqlString($_POST['ajt_prenom'])." , ".mysqlString($_POST['ajt_email'])." , ".mysqlString($_POST['ajt_adresse'])." , ".mysqlString($_POST['ajt_telbureau'])." , ".mysqlString($_POST['ajt_telperso'])." , ".mysqlString($_POST['ajt_commentaire'])." ";
				if($communeIndiquee){
					$query_creation_personne .= ", ".$idCommune." ";
				}else{
					$query_creation_personne .= ", NULL ";
				}
				if($_POST['ajt_structure'] == "none"){
					$query_creation_personne .= ", NULL ";
				}else{
					$query_creation_personne .= ",".$_POST['ajt_structure']." ";
				}
				$query_creation_personne .= ") ";
				
				$result_creation_personne = mysql_query($query_creation_personne, $connexion) or logError("CREATION PERSONNE-".$query_creation_personne."-".mysql_error());
				
				// Vérification du résultat de la création
				if($result_creation_personne === true){
					$statut[] = "La personne a été ajoutée - redirection dans 2 sec...";
					logAction("PERSONNE (id: ".valueMax("CODEPERSONNE", "personne", $connexion).") AJOUTEE par ".capitalise($GLOBALS['USER']['prenom'])." ".mb_strtoupper($GLOBALS['USER']['nom'])." (".$GLOBALS['USER']['login'].")");
				}else{
					$statut[] = "Erreur critique lors de la création de la personne";
					$erreur = true;
				}
				
			}
		
		}
		
	}
?>
<?php
//------------------------------------------------------------ Affichage du statut si le formulaire a été envoyé

	if(isset($_POST['form_sent'])){ // si le formulaire est envoyé
	
		if($erreur){
			afficherStatut($statut, 3); // appel à la fonction afficherStatut() définie dans fonctions.php
		}else{
			afficherStatut($statut, 1); // appel à la fonction afficherStatut() définie dans fonctions.php
			redirection("gestion/personne_ajoute", 2); // appel à la fonction redirection() définie dans fonctions.php
		}
	
	}

?>
<form id="frm_ajt_personne" method="post" action="index.php?p=gestion/personne_ajoute" onsubmit="return verifHomonymes('ajt_nom', 'ajt_prenom', 'frm_ajt_personne');">
	<table class="formulaire" style="margin-left: auto; margin-right: auto;">
		<tr>
			<th class="titre" colspan="2">Ajout d'une personne</th>
		</tr>
		<tr>
			<th class="sous_titre" colspan="2">informations personnelles</th>
		</tr>
		<tr>
			<td style="width: 120px" class="etiquette">Nom * :</td>
			<td style="width: 375px" class="champ"><input type="text" id="ajt_nom" name="ajt_nom" size="25" value="<?php echo htmlentities($dv_nom, ENT_COMPAT, "UTF-8"); ?>" /></td>
		</tr>
		<tr>
			<td class="etiquette">Prénom * :</td>
			<td class="champ"><input type="text" id="ajt_prenom" name="ajt_prenom" size="25" value="<?php echo htmlentities($dv_prenom, ENT_COMPAT, "UTF-8"); ?>" /></td>
		</tr>
		<tr>
			<th class="sous_titre" colspan="2">contact</th>
		</tr>
		<tr>
			<td class="etiquette">E-mail :</td>
			<td class="champ"><input type="text" name="ajt_email" size="25" value="<?php echo htmlentities($dv_email, ENT_COMPAT, "UTF-8"); ?>" /></td>
		</tr>
		<tr>
			<td class="etiquette">Adresse :</td>
			<td class="champ">
				<input id="ajt_adresse" name="ajt_adresse" type="text" size="25" value="<?php echo htmlentities($dv_adresse, ENT_COMPAT, "UTF-8"); ?>" onfocus="clearField('ajt_adresse', 'N°, Voie');" onblur="resetField('ajt_adresse', 'N°, Voie');" /><br />
				<input id="ajt_cp" name="ajt_cp" type="text" size="5" value="<?php echo htmlentities($dv_cp, ENT_COMPAT, "UTF-8"); ?>" onfocus="clearField('ajt_cp', 'CP');" onblur="resetField('ajt_cp', 'CP');" onkeyup="afficherListeCommunes('ajt_ville', 'ajt_cp', 'ajt_pays', 'lst_communes', true);" /> - <input id="ajt_ville" name="ajt_ville" type="text" size="12" value="<?php echo htmlentities($dv_ville, ENT_COMPAT, "UTF-8"); ?>" onfocus="clearField('ajt_ville', 'Ville');" onblur="resetField('ajt_ville', 'Ville');" onkeyup="afficherListeCommunes('ajt_ville', 'ajt_cp', 'ajt_pays', 'lst_communes', true);" /><br />
				<input id="ajt_pays" name="ajt_pays" type="text" size="20" value="<?php echo htmlentities($dv_pays, ENT_COMPAT, "UTF-8"); ?>" onfocus="clearField('ajt_pays', 'Pays');" onblur="resetField('ajt_pays', 'Pays');" onkeyup="afficherListeCommunes('ajt_ville', 'ajt_cp', 'ajt_pays', 'lst_communes', true);" />
				<div style="position: relative;">
					<div id="lst_communes" class="infobulle" style="position: absolute; top: 0; left: 0; display: none;">
						<div class="titre"><span id="lst_communes-titre">Villes suggérées :</span><div style="position: absolute; top: 3px; right: 3px; font-size: 12px; font-weight: bold; font-style: normal;">[<a href="#" onclick="document.getElementById('lst_communes').style.display='none'; return false;">X</a>]</div></div>
						<div id="lst_communes-contenu" class="contenu"></div>
					</div>
				</div>
			</td>
		</tr>
		<tr>
			<td class="etiquette">Téléphone :</td>
			<td class="champ">
				<input type="text" name="ajt_telperso" size="25" value="<?php echo htmlentities($dv_telperso, ENT_COMPAT, "UTF-8"); ?>" /> <label>(Personnel)</label><br />
				<input type="text" name="ajt_telbureau" size="25" value="<?php echo htmlentities($dv_telbureau, ENT_COMPAT, "UTF-8"); ?>" /> <label>(Bureau)</label><br />
				(uniquement des chiffres, tous attachés)
			</td>
		</tr>
		<tr>
			<th class="sous_titre" colspan="2">relation</th>
		</tr>
		<tr>
			<td class="etiquette">Travail pour :</td>
			<td class="champ">
				<select name="ajt_structure">
					<option value="none" <?php if(is_null($dv_structure)) echo "selected=\"selected\""; ?>>aucune structure</option>
					<optgroup label="Structures :">
					<?php
						if($nb_structures > 0){
							foreach($selectStructures as $structure){
								if($structure['id'] == $dv_structure){
									echo "<option value=\"".$structure['id']."\" selected=\"selected\">".htmlentities($structure['nom'], ENT_NOQUOTES, "UTF-8")."</option>";
								}else{
									echo "<option value=\"".$structure['id']."\">".htmlentities($structure['nom'], ENT_NOQUOTES, "UTF-8")."</option>";
								}
							}
							unset($structure);
						}else{
							echo "<option disabled=\"disabled\">Aucune structure enregistrée</option>";
						}
					?>
					</optgroup>
				</select>
			</td>
		</tr>
		<tr>
			<th class="sous_titre" colspan="2">informations complémentaires</th>
		</tr>
		<tr>
			<td class="etiquette">Commentaire :</td>
			<td class="champ"><textarea name="ajt_commentaire" rows="2" cols="25"><?php echo htmlentities($dv_commentaire, ENT_COMPAT, "UTF-8"); ?></textarea></td>
		</tr>
		<tr>
			<td class="envoi" colspan="2"><input type="submit" value="Ajouter" /><input type="hidden" name="form_sent" value="1" /></td>
		</tr>
		<tr>
			<td class="legende" colspan="2">* = champs obligatoires</td>
		</tr>
	</table>
</form>
<div class="information">
	<div class="titre">Information</div>
	<h4>Travail pour :</h4>
	<p>Si la structure pour laquelle travaille la personne n'est pas proposée, créez la personne sans lui affectez de structure, créez ensuite la structure dans le menu correspondant puis éditez la personne.</p>
</div>
<?php
//------------------------------------------------------------ Accès refusé à la page

	}else{
	
		if(isset($_SESSION)){
			include("pages/401.htm");
		}
	
	}

?>